package com.wuchao.mapper;

import com.wuchao.entity.Entry;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

/**
 * @Author wuchao66
 * @Date 2023/9/15 16:04
 * @PackageName:com.wuchao.mapper
 * @ClassName: EntryMapper
 * @Description: TODO
 * @Param
 * @Version 1.0
 */
public interface EntryMapper {//编译 存储过程

    //存储过程
    @Select("SELECT title from entry where id=#{id}")
    public String findTitleById(int id);

    //返回值 方法名 入参  方法体
    public List<Entry> findEntryById(int id);
    public List<Entry> findEntryById1(Entry entry);
    //修改
    public int updateEntryByEntry(Entry entry);
    //删除
    @Delete("delete  from entry where id=#{id}")
    public int deleteEntryById(@Param("id") int id);

    //模糊查询
    public List<Entry> findEntryByTitleCONCAT1(String title);
    public List<Entry> findEntryByTitleCONCAT2(Entry entry);
    public List<Entry> findEntryByTitleCONCAT3(@Param("title") String title);
    @Select("select * from entry where title like CONCAT ('%',#{title},'%')")
    public List<Entry> findEntryByTitleCONCAT4(String title);
    //y2的时候mybatis 顶级标签一般sql单表并且简单
    //resultmap 查询 借给别人用
    public List<Entry> findInfoUseEntry();
    //一对-多表联查
    public List<Entry> findEntryAndCategoryByTitleCONCAT(@Param("title")String title);
    //一对多 多表查询。需要映射单独集合实体
    public List<Entry> findEntryByCategoryId
    (@Param("categoryId") int categoryId);

    //动态sql  入参只能是对象 --表单
    public List<Entry> selectEntryByEntry(Entry entry);
    //动态修改
    public  int updateEntryByEntry1(Entry entry);
    //trim
    public  int updateEntryByEntry2(Entry entry);
    //choose
    public List<Entry> chooseEntryById(@Param("id") int id);

    //不同类型入参 map array list map<>
    public List<Entry> selectEntryByMap(Map map);

    public List<Entry> selectEntryByArray(Integer [] ids);

    public List<Entry> selectEntryByList(List<Integer> list);

    public List<Entry> selectEntryByMapList(Map<String,List<Integer>> map);

    //最难的这个
    public List<Entry>
    findEntryAndCateGoryByCategoryIdByConcatTitleByPage(@Param("categoryId") int categoryId,@Param("title") String title);

    //增加
    int addEntryByEntry(Entry entry);
   // mapper:insert update delete select
   //service add  modefiy/update remove  find

    //一步注册
    @Select("SELECT COUNT(1) FROM entry where title=#{title}")
    int registerbyname(String title);

    @Select("select  * from entry where categoryId=#{categoryId}")
    public List<Entry> findEntryBycategoryId(int categoryId);

    @Select("select  count(1) from entry where title=#{title} and summary=#{summary}")
    int loadbyEntry(@Param("title") String title,@Param("summary") String summary);

    //orm mapper 接口里面的东西要和mapper.xml 实现完全映射
    //企业的思维返回值一般int + List<T>
    //以后的是 List<T> +void +boolean
//    public String  show (int id){
//        return xx;
//    }
//    访问修饰符 返回值类型  方法名 (入参集合){
//        返回值
//    }
   // public int(cud)/List<T>(r)  你定义 (name/entry);
    //入参要么就是单个实体属性 要么整对象即可--对接表单
   // 方法体去xml里面写
    //不支持重载
    //总结：
//    返回值类型：
//    cud: int
//    r:List<T>
//    入参：
//    看情况,一般都喜欢对象入参

}
